iT邦幫忙

2024 iThome 鐵人賽

DAY 17
0
AI/ ML & Data

Let's Go To The AI Party!系列 第 18

Day17-集成學習

  • 分享至 

  • xImage
  •  

集成學習(Ensemble Learning)

一種機器學習方法,通過組合多個學習模型來獲得比單一模型更好的預測性能。就像集思廣益,多個模型的智慧結合,可以產生更準確、穩定的結果

集成學習種類

Bagging

  • 隨機森林 (Random Forest) 是最常見Bagging方法
  • 從原始數據集中有放回隨機抽取多個子集,每個子集訓練一個基模型
  • 最終通過投票或平均等方式組合所有基模型的預測結果
  • 優點:降低方差,減少過擬合
    https://ithelp.ithome.com.tw/upload/images/20240816/20163257lMfabfPbDr.png
    圖片來源:Ensemble Learning: Bagging & Boosting

Boosting

  • 每次迭代都訓練一個新模型,新模型訓練集中,對前一個模型預測錯誤的樣本給予更高權重
  • AdaBoost梯度提升樹 (Gradient Boosting Decision Tree, GBDT) 是常見Boosting方法
  • 優點:降低偏差,提高模型精度
    https://ithelp.ithome.com.tw/upload/images/20240816/2016325704Fh2mMbaw.png
    圖片來源:Understanding Boosting in Machine Learning: A Comprehensive Guide

Stacking

集成學習公式(以Bagging為例)

假設有T個基模型,每個模型的預測結果為h_t(x),則最終的預測結果H(x)可以表示為:

H(x) = argmax Σ_t=1^T w_t * h_t(x)

w_t是每個模型的權重

集成學習優缺點

  • 優點
    • 提高模型的泛化能力
    • 減少過擬合的風險
    • 適用於各種機器學習任務
  • 缺點
    • 模型複雜度增加,訓練時間較長
    • 解釋性較差

集成學習應用

  • 分類問題:垃圾郵件分類、情感分析
  • 迴歸問題:房價預測、銷售額預測
  • 推薦系統:提高推薦準確性
  • 異常檢測:發現異常數據

集成學習程式碼(Python-Scikit-learn)

from sklearn.ensemble import RandomForestClassifier
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split

# 載入鳶尾花數據集
iris = load_iris()
X, y = iris.data, iris.target

# 分割訓練集和測試集
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.2, random_state=42)

# 創建隨機森林分類器
clf = RandomForestClassifier(n_estimators=100, random_state=42)

# 訓練模型
clf.fit(X_train, y_train)

# 進行預測
y_pred = clf.predict(X_test)

# 評估模型性能
from sklearn.metrics import accuracy_score
accuracy = accuracy_score(y_test, y_pred)
print("Accuracy:", accuracy)

結論

集成學習是一種強大的機器學習技術,通過組合多個模型,可以顯著提高模型的性能。在實際應用中,選擇合適的集成學習方法,並對模型進行調參,是獲得最佳效果的關鍵

資料來源:集成學習-Ensemble Learning


上一篇
Day16-強化機器學習
下一篇
Day18-線性迴歸
系列文
Let's Go To The AI Party!31
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言